//获取App应用实例
const app = getApp();
const dailyPoetry = require('../../../utils/dailyPoetry')
const menu = require('../../../utils/menuData')
const user = require('../../../utils/user')
// 四个变量处理左右滑动，开启/关闭抽屉
let touchDotX = 0; //按下时x坐标
let touchDotY = 0; //按下时y坐标
let interval; //计时器
let time = 0; //从按下到松开共多少时间*100
Page({

  /**
   * 页面的初始数据
   */
  data: {
    cardCur: 0,
    poetry: '', //今日诗词
    swiperList: [],
    menuList: menu.menuData,
    // 管理员OpenID
    adminOpenid: app.globalData.adminOpenid,
    userInfo: {
      hasUserInfo: false,
      Role: '游客',
      adminRoleFlag: false, //是否是管理员
    },
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.loadModal();
    this.getSwiperList();
    // 每日诗词
    this.getPoetry();
    // 从本地缓存中获取用户信息
    this.getUserInfoInStorage();
  },
  // 查询轮播图列表
  getSwiperList(){
    let timestamp = Date.parse(new Date());
    let expiration = wx.getStorageSync("swiperListExpiration");
    let swiperData = wx.getStorageSync("swiperList");
    if(expiration > timestamp && swiperData){
      console.log("缓存中swiperList数据未过期~");
      this.setData({
        swiperList: swiperData
      });
      return;
    }
    console.log("缓存中没有swiperList数据或已过期00");
    wx.cloud.callFunction({
      name: "query",
      data: {
        dbName: "t_carousel",
        filter: {},
      },
      success: (res) => {
        console.log("查询轮播图列表成功回调：",res)
        this.setData({
          swiperList: res.result.data
        });
        //异步不会阻塞当前任务
        wx.setStorage({
          data: res.result.data,
          key: 'swiperList'
        });
        // 有效期24小时，1分钟=60000ms
        let expiration = Date.parse(new Date()) + (24 * 60 * 60000)
        wx.setStorage({
          data: expiration,
          key: 'swiperListExpiration'
        });
      },
      fail: (err) => {
        console.log("查询轮播图列表失败回调：",err)
        wx.showToast({
          title: '轮播图获取失败',
          icon: 'none'
        })
      }
    })
  },
  // 今日诗词
  getPoetry() {
    dailyPoetry.load(res => {
      this.setData({ poetry: res.data.content });
    })
  },
  // 切换轮播图
  cardSwiper(e) {
    this.setData({
      cardCur: e.detail.current
    })
  },
  // 从本地缓存中获取用户信息
  getUserInfoInStorage(){
    let timestamp = Date.parse(new Date());
    let expiration = wx.getStorageSync("userInfoExpiration");
    let userInfo = wx.getStorageSync("userInfo")
    if(expiration > timestamp && userInfo){
      this.setData({ userInfo: userInfo });
      return;
    }
    console.log("缓存中无userInfo或已过期~~");
  },
  /**
   * 获取用户头像昵称信息组件回调方法
   */
  getAvaNickData(res) {
    console.log("组件回调：",res);
    const {avatarUrl,nickName} = res.detail
    this.setData({
      'userInfo.avatarUrl': avatarUrl,
      'userInfo.nickName': nickName,
      'userInfo.hasUserInfo': true
    });
    /*
    console.log("data拿不到：",user.getUserInfo(avatarUrl,nickName));
    this.setData({ userInfo: user.getUserInfo(avatarUrl,nickName) });
    */
    // 调用云函数获取微信的openid判断是不是管理员
    wx.cloud.callFunction({
      // 云函数名称
      name: 'getOpenID',
      // 传给云函数的参数
      data: {},
      success: (res) => {
        console.warn("你的OpenID为:", res.result.openid);
        this.setData({
          'userInfo.happyBean': res.result.happyBean,
          'userInfo.openid': res.result.openid
        });
        if (res.result.openid == this.data.adminOpenid) {
          this.setData({
            'userInfo.Role': '管理员',
            'userInfo.adminRoleFlag': true
          });
        } else {
          this.setData({
            'userInfo.Role': '游客',
            'userInfo.adminRoleFlag': false
          });
        }
        console.log("最终要存入缓存的userInfo：",this.data.userInfo);
        app.globalData.userInfo = this.data.userInfo;
        wx.setStorageSync('userInfo', this.data.userInfo);
        // 有效期7天，1分钟=60000ms
        let expiration = Date.parse(new Date()) + (7 * 24 * 60 * 60000)
        wx.setStorage({
          data: expiration,
          key: 'userInfoExpiration'
        });
      },
      fail: (error) => {
        console.log("getOpenID云函数调用失败：", error);
        wx.showModal({
          title: '提示',
          content: 'getOpenID云函数调用失败'
        })
      }
    });
  },
  login() {
    this.setData({ showAvaModal: true });
  },
  // 微信授权按钮弃用
  getUserProfile(e) {
    // （官方已废弃）
    wx.getUserProfile({
      desc: '微信授权访问', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        console.log("微信授权访问",res);
        var hasUserInfoTemp = "userInfo.hasUserInfo"
        this.setData({
          userInfo: res.userInfo,
          [hasUserInfoTemp]: true
        });
        // 调用云函数获取微信的openid判断是不是管理员
        wx.cloud.callFunction({
          // 云函数名称
          name: 'getOpenID',
          // 传给云函数的参数
          data: {},
          success: (res) => {
            console.warn("你的OpenID在这里:", res.result);
            var roleTemp = "userInfo.Role"
            var adminRoleFlagTemp = "userInfo.adminRoleFlag"
            this.setData({
              'userInfo.happyBean': res.result.happyBean,
              'userInfo.openid': res.result.openid
            });
            if (res.result.openid == this.data.adminOpenid) {
              this.setData({
                [roleTemp]: '管理员',
                [adminRoleFlagTemp]: true
              });
            } else {
              this.setData({
                [roleTemp]: '游客',
                [adminRoleFlagTemp]: false
              });
            }
            console.log("最终要存入缓存的userInfo：",this.data.userInfo);
            app.globalData.userInfo = this.data.userInfo;
            wx.setStorageSync('userInfo', this.data.userInfo);
            // 有效期7天，1分钟=60000ms
            let expiration = Date.parse(new Date()) + (7 * 24 * 60 * 60000)
            wx.setStorage({
              data: expiration,
              key: 'userInfoExpiration'
            });
          },
          fail: (error) => {
            console.log("getOpenID云函数调用失败：", error);
            wx.showModal({
              title: '提示',
              content: 'getOpenID云函数调用失败'
            })
          }
        });
      },
      fail: (error) => {
        console.log("微信授权失败：", error);
        wx.showModal({
          title: '提示',
          content: '微信授权失败'
        })
      }
    });
  },
  // 隐藏抽屉
  hideModal(e) {
    this.setData({
      modalName: null
    })
  },
  // 触摸开始事件(通过判断手势滑动的方向，来开启/关闭抽屉)
  touchStart: function (e) {
    touchDotX = e.touches[0].pageX; // 获取触摸时的原点
    touchDotY = e.touches[0].pageY;
    // 使用js计时器记录时间    
    interval = setInterval(function () {
      time++;
    }, 100);
  },
  // 触摸结束事件
  touchEnd: function (e) {
    let touchMoveX = e.changedTouches[0].pageX;
    let touchMoveY = e.changedTouches[0].pageY;
    let tmX = touchMoveX - touchDotX;
    let tmY = touchMoveY - touchDotY;
    if (time < 20) {
      let absX = Math.abs(tmX);
      let absY = Math.abs(tmY);
      if (absX > 2 * absY) {
        if (tmX < 0) {
          console.log("向左滑动，关闭抽屉！")
          this.setData({ modalName: null })
        } else {
          console.log("向右滑动，打开抽屉！")
          this.getUserInfoInStorage();
          //显示抽屉
          this.setData({ modalName: "viewModal" })
        }
      }
      if (absY > absX * 2 && tmY < 0) {
        console.log("====上滑动=====")
      }
    }
    clearInterval(interval); // 清除计时器setInterval
    time = 0; //重置从按下到松开共多少时间*100
  },
  // 点击了抽屉里的GitHub
  showMask: function (e) {
    this.selectComponent("#authorCardId").showMask();
  },
  // 开启/关闭炫图模式
  changeSkin(e) {
    // console.warn("开启/关闭炫图模式:", e.detail.value);
    app.globalData.skin = e.detail.value
    this.setData({
      skin: e.detail.value
    });
  },
  /**
   * loading加载1s后关闭
   */
  loadModal() {
    this.setData({ showLoading: true });
    setTimeout(() => {
      this.setData({ showLoading: false })
    }, 1000)
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  //自定义函数
	// 用户点击右上角分享给好友,要先在分享好友这里设置menus的两个参数,才可以分享朋友圈
	onShareAppMessage: function() {
		wx.showShareMenu({
	      withShareTicket: true,
	      menus: ['shareAppMessage', 'shareTimeline']
	    })
  },
  //用户点击右上角分享朋友圈
	onShareTimeline: function () {
		return {
	      title: '遇见0和1',
	      query: {},
	      imageUrl: 'https://s2.loli.net/2023/03/12/udnlPsjVKXE68Tf.png'
	  }
	},
  /**
   * 用户点击右上角分享好友
   */
  onShareAppMessage: function () {
    return {
      title:'遇见0和1',
      path: '/pages/home/index/index',
      imageUrl: 'https://s2.loli.net/2023/03/12/udnlPsjVKXE68Tf.png',
    }
  }
})